rns.moscow π₯ [git]
Mirrored from https://git.rns.moscow/deuxyeux/rns-wardrive-tools.git synced 21h ago
σ° Files β’ σ±£ Work (0) β’ σ° Commits (66) β’ σ°¬ Branches (1) β’ σ°Ό Tags (0) β’ σ° Thanks (0)
>rns-wardrive-tools
A collection of tools for wardriving LoRa coverage using the Reticulum Network Stack and Sideband.
To feed location data to the collector bot you can use either the Sideband plugin below or the dedicated Android app, **rns-wardrive-app**, which provides a live map, transmission log, and a bi-directional Probe mode for two-way RF link quality surveys.
Components
T383838plugin/ β Sideband Plugin
A Sideband service plugin that runs on your mobile device and periodically sends your GPS location to the collector bot over RNS. If you'd rather use a standalone app instead of running it inside Sideband, see rns-wardrive-app.
Installation:
Copy T383838wardrive_plugin.py and T383838wardrive_config.json to your Sideband plugins directory (configured in Sideband settings under Plugins path).
Configuration (T383838wardrive_config.json):
T282828
Tb4b4b4{
Tff7b72"announce_interval_secs"Tb4b4b4: T79c0ff30Tb4b4b4,
Tff7b72"announce_mode"Tb4b4b4: Ta5d6ff"auto"Tb4b4b4,
Tff7b72"send_mode"Tb4b4b4: Ta5d6ff"packet"Tb4b4b4,
Tff7b72"bot_hashes"Tb4b4b4: Tb4b4b4[Ta5d6ff"<bot collector destination hash>"Tb4b4b4]
Tb4b4b4}
ββββββββββββββββββββββββββ¬ββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Option β Values β Description β
ββββββββββββββββββββββββββΌββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β T383838announce_interval_secs β integer (min 15) β How often to send location in auto mode β
β T383838announce_mode β T383838auto / T383838manual β T383838auto: sends on interval; T383838manual: sends when you β¦ β
β T383838send_mode β T383838announce / T383838packet β T383838announce: broadcasts on the network; T383838packet: senβ¦ β
β T383838bot_hashes β list of hex strings β Collector destination hashes of bots to send to β¦ β
ββββββββββββββββββββββββββ΄ββββββββββββββββββββββ΄ββββββββββββββββββββββββββββββββββββββββββββββββββββ
In packet mode, location data is sent encrypted directly to each listed bot β it is not broadcast to the wider network. RSSI/SNR are still recorded on the receiving end.
In announce mode, location is broadcast as a T383838wardrive.beacon announce visible to all nodes.
T383838bot/ β Collector Bot
A server-side RNS daemon that listens for incoming location data, records RF signal statistics, and responds to LXMF commands.
Requirements: T383838rns, T383838lxmf, T383838rnsd running
Installation:
Copy T383838wardrive_bot.py to T383838/opt/reticulum/bin/ (or any location on your T383838$PATH).
Usage:
T282828
python3 wardrive_bot.py
The bot writes to T383838~/wardrive_bot.db (SQLite) and logs to T383838/etc/reticulum/wardrive_bot_logfile.
LXMF commands (send via Sideband or any LXMF client):
ββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Command β Response β
ββββββββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β T383838ping β T383838Pong! [14:32:01, RSSI: -74dBm, SNR: 6.5dB] β RF stats included if message arriveβ¦ β
β T383838status β Point count and timestamp of last received beacon β
β T383838nodes β Count of discoverable nodes within the configured radius β
β T383838destinations β Collector/probe destination hashes, plus the relay (aggregator) hash if this botβ¦ β
β T383838announce β Reannounces all of the bot's destinations after a short randomized delay β
ββββββββββββββββ΄ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
T383838map/ β Coverage Map Server
A Flask web server that reads the bot's database and serves a live interactive coverage heatmap.
Requirements: T383838flask, T383838rns
Installation:
Copy T383838map_server.py to T383838/opt/reticulum/bin/ and T383838wardrive_map.json to T383838/etc/reticulum/.
Configuration (T383838wardrive_map.json):
T282828
Tb4b4b4{
Tff7b72"db_path"Tb4b4b4: Ta5d6ff"~/wardrive_bot.db"Tb4b4b4,
Tff7b72"discovery_dir"Tb4b4b4: Ta5d6ff"/etc/reticulum/storage/discovery/interfaces"Tb4b4b4,
Tff7b72"listen_on"Tb4b4b4: Ta5d6ff"0.0.0.0"Tb4b4b4,
Tff7b72"port"Tb4b4b4: T79c0ff5000Tb4b4b4,
Tff7b72"page_title"Tb4b4b4: Ta5d6ff"Wardrive Coverage Map"Tb4b4b4,
Tff7b72"initial_lat"Tb4b4b4: Tff7b72nullTb4b4b4,
Tff7b72"initial_lon"Tb4b4b4: Tff7b72nullTb4b4b4,
Tff7b72"initial_zoom"Tb4b4b4: Tff7b72null
Tb4b4b4}
Set T383838initial_lat, T383838initial_lon, and T383838initial_zoom to pre-position the map on load; leave all three as T383838null to auto-fit to recorded points.
Usage:
T282828
python3 map_server.py
Serves on T383838http://0.0.0.0:5000 by default.
Features:
β’ Live heatmap of recorded coverage points, coloured by RSSI
β’ Live data stream panel showing incoming packets in real time (source, coordinates, RSSI/SNR/Q)
β’ Date range filter with day/week/month/year presets
β’ Light/dark UI theme with tileset selector (Dark, Voyager, Voyager no labels, Light, OSM)
β’ RNS infrastructure discovery panel β shows RNodes, Backbone, and I2P interfaces that have GPS coordinates, sourced from the local RNS discovery cache
β’ Toggleable node labels per interface type
T383838init_scripts/ β Service Files
Systemd and OpenRC service files for both the bot and the map server.
OpenRC:
T282828
cp init_scripts/openrc/wardrive-bot /etc/init.d/
cp init_scripts/openrc/wardrive-map /etc/init.d/
chmod +x /etc/init.d/wardrive-bot /etc/init.d/wardrive-map
rc-update add wardrive-bot default
rc-update add wardrive-map default
Systemd:
T282828
cp init_scripts/systemd/wardrive-bot.service /etc/systemd/system/
cp init_scripts/systemd/wardrive-map.service /etc/systemd/system/
systemctl daemon-reload
systemctl Tffa657enable --now wardrive-bot wardrive-map
Data Flow
T282828
[Sideband + plugin]
|
| wardrive.beacon announce (announce mode, visible to all)
| wardrive.collector packet (packet mode, encrypted to bot only)
|
[wardrive_bot.py] ββββ wardrive_bot.db ββββ[map_server.py]ββββ browser
|
LXMF replies (ping, status)
Served by rngit 1.4.2 - Generated in 0.08s